package com.ygp.dtp.core.support;

import com.ygp.dtp.core.thread.DynamicThreadPoolExecutor;
import com.ygp.dtp.core.thread.ThreadPoolBuilder;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.ThreadPoolExecutor;

/**
 * @description: 提供快速 动态数据源创建器，仅在简单场景中使用。最好使用 ThreadPoolBuilder 并分配相关值。
 * @motto: 代码源于生活，高于生活艺术
 * @author: zhouhengzhe
 * @date: 2022/8/9 16:40
 * @since 1.0
 **/
public class DtpCreator {

    /**
     * 快速创建一个简单的线程池
     *
     * @param threadPrefix 线程工厂前缀
     * @return
     */
    public static ThreadPoolExecutor createCommonFastPool(String threadPrefix) {
        return ThreadPoolBuilder.builder().threadFactory(threadPrefix).buildCommon();
    }

    /**
     * 快速创建一个动态线程池
     *
     * @param name 线程名
     * @return
     */
    public static DynamicThreadPoolExecutor createDynamicFast(String name) {
        return createDynamicFast(name, name);
    }

    /**
     * 快速创建一个动态线程池
     *
     * @param name         线程名
     * @param threadPrefix 线程工厂前缀
     * @return
     */
    public static DynamicThreadPoolExecutor createDynamicFast(String name, String threadPrefix) {
        return ThreadPoolBuilder.builder().threadPoolName(name).threadFactory(threadPrefix).buildDynamic();
    }

    /**
     * 使用 ttl 构建线程池执行器和包装器
     * @param threadPrefix
     * @return
     */
    public static ExecutorService createWithTtl(String threadPrefix) {
        return ThreadPoolBuilder.builder().threadFactory(threadPrefix).buildWithTtl();
    }
}
